home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / Delphi / MP3 Blade Encoder Component 1.0 / BLADEENC.PAS next >
Encoding:
Pascal/Delphi Source File  |  1999-03-19  |  3.7 KB  |  126 lines

  1. unit bladeenc;
  2.  
  3. // http://home8.swipnet.se/~w-82625/encoder/binaries/BladeDLL075.zip
  4.  
  5. interface
  6.  
  7. uses Windows;
  8.  
  9. type
  10.   SHORT = ShortInt;
  11.   PSHORT = ^SHORT;
  12.  
  13.   HBE_STREAM = DWORD;
  14.   PHBE_STREAM = ^HBE_STREAM;
  15.   BE_ERR = DWORD;
  16.  
  17. const
  18.  
  19.   BE_CONFIG_MP3                    = 0;
  20.  
  21.   BE_ERR_SUCCESSFUL               = $00000000;
  22.   BE_ERR_INVALID_FORMAT               = $00000001;
  23.   BE_ERR_INVALID_FORMAT_PARAMETERS = $00000002;
  24.   BE_ERR_NO_MORE_HANDLES           = $00000003;
  25.   BE_ERR_INVALID_HANDLE            = $00000004;
  26.  
  27.   BE_MAX_HOMEPAGE                  = 256;
  28.  
  29.  
  30.   BE_MP3_MODE_STEREO               = 0;
  31.   BE_MP3_MODE_DUALCHANNEL          = 2;
  32.   BE_MP3_MODE_MONO                 = 3;
  33.  
  34. type
  35.   PBE_CONFIG = ^TBE_CONFIG;
  36.   TBE_CONFIG = packed record
  37.      dwConfig: DWord;          // Currently only BE_CONFIG_MP3 is supported
  38.      case integer of
  39.          0: (MP3: packed record
  40.                 dwSampleRate: DWord; // 48000, 44100 and 32000 allowed
  41.                 byMode: Byte;        // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO
  42.                 wBitrate: Word;      // 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 allowed
  43.               bPrivate: Bool;
  44.             bCRC: Bool;
  45.             bCopyright: Bool;
  46.             bOriginal: Bool;
  47.             end);
  48.          1: (AAC: packed record
  49.                   dwSampleRate: DWord;  // 48000, 44100 and 32000 allowed
  50.                 byMode: Byte;         // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO
  51.             wBitrate: Word;       // 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 allowed
  52.             byEncodingMethod: Byte;
  53.             end);
  54.   end;
  55.  
  56.   PBE_VERSION = ^TBE_VERSION;
  57.   TBE_VERSION = packed record
  58.       // BladeEnc DLL Version number
  59.       byDLLMajorVersion: Byte;
  60.     byDLLMinorVersion: Byte;
  61.  
  62.       // BladeEnc Engine Version Number
  63.       byMajorVersion: Byte;
  64.         byMinorVersion: Byte;
  65.  
  66.       // DLL Release date
  67.         byDay: Byte;
  68.       byMonth: Byte;
  69.       wYear: Byte;
  70.  
  71.       // BladeEnc    Homepage URL
  72.         zHomepage: array[0..BE_MAX_HOMEPAGE] of Char;
  73.   end;
  74.  
  75. var
  76.   beInitStream   : function(pbeConfig   : PBE_CONFIG;
  77.                             var dwSamples   : DWORD;
  78.                             var dwBufferSize: DWORD;
  79.                             var hbeStream   : HBE_STREAM
  80.                             ): BE_ERR; cdecl;
  81.  
  82.   beEncodeChunk  : function(hbeStream   : HBE_STREAM;
  83.                             xnSamples   : DWORD;
  84.                             pSamples    : PChar;
  85.                             pOutput     : PChar;
  86.                             var pdwOutput   : DWORD
  87.                             ): BE_ERR; cdecl;
  88.  
  89.   beDeinitStream : function(hbeStream: HBE_STREAM;
  90.                             pOutput: PChar;
  91.                             var pdwOutput: DWORD
  92.                             ): BE_ERR; cdecl;
  93.  
  94.   beCloseStream  : function(hbeStream: HBE_STREAM): BE_ERR; cdecl;
  95.  
  96.   beVersion      : procedure(var beVersion: TBE_VERSION); cdecl;
  97.  
  98. function RequestDLLLoading: Boolean;
  99.  
  100. implementation
  101.  
  102. var
  103.      BLADEDLL : THANDLE = 0;
  104.  
  105. function RequestDLLLoading: Boolean;
  106. begin
  107.    if (BLADEDLL = 0) then
  108.    begin
  109.       BLADEDLL := LoadLibrary('BLADEENC.DLL');
  110.       if (BLADEDLL <> 0) then
  111.       begin
  112.          @beInitStream   := GetProcAddress(BLADEDLL,'beInitStream');
  113.          @beEncodeChunk  := GetProcAddress(BLADEDLL,'beEncodeChunk');
  114.          @beDeinitStream := GetProcAddress(BLADEDLL,'beDeinitStream');
  115.          @beCloseStream  := GetProcAddress(BLADEDLL,'beCloseStream');
  116.          @beVersion      := GetProcAddress(BLADEDLL,'beVersion');
  117.       end;
  118.    end;
  119.    Result := (BLADEDLL <> 0);
  120. end;
  121.  
  122. initialization
  123. finalization
  124.    if (BLADEDLL <> 0) then FreeLibrary(BLADEDLL);
  125. end.
  126.